package cn.tedu.api;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;

/**
 * Date：2021年10月
 * Author：程Sir
 * Name： JavaSE-API
 * Content:
 *       TimeZone是一个抽象类，封装关于时区相关操作！
 *       时区的唯一标识是以字符串表示的ID,Asia/Shanghai
 */
public class TimeZoneDemo {

    public static void main(String[] args) {
        // 获取当前系统的时区
        System.out.println(TimeZone.getDefault());;//Asia/Shanghai

        // 获取系统支持的所有ID
        String[] zones =  TimeZone.getAvailableIDs();  // 系统支持的时区有627个
        for (int i = 0; i <zones.length ; i++) {
            System.out.println(zones.length);
            System.out.println(zones[i]);
        }

        // h获取指定时区，如果输出的ID不存在或者有误，则得到的时区是GMT
        TimeZone T = TimeZone.getTimeZone("America/New_York");
        System.out.println(T);

        // 将当前的北京时间转换为纽约时间
        // 获取北京时间
        Calendar calendar = Calendar.getInstance();
        // 设置当前的时区
        calendar.setTimeZone(TimeZone.getTimeZone("Aisa/Shanghai"));
        // 设置时间 年月日时分秒
        calendar.set(2019,9,20,8,15,30); // 2019-10-20 08:15:30

        // 获取纽约的时区
        TimeZone timeZone =  TimeZone.getTimeZone("America/New_York");
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 格式化输出时，按照指定的时区进行输出
        simpleDateFormat.setTimeZone(timeZone);
        String time = simpleDateFormat.format(calendar.getTime());
        System.out.println("指定的北京时间按照纽约时区输出："+time); // 2019-10-20 04:15:30

    }
}
